class CreateProducts < ActiveRecord::Migration
  def self.up
    create_table :products do |t|
      t.integer :company_id      ,:null => false               #所属公司的ID
      t.integer :vendor_id       ,:null => false               #供应商的ID
      t.string :number                                         #产品的编号
      t.string :name             ,:null => false               #产品的名字
      t.integer :brand_id        ,:null => false               #品牌
      t.integer :product_type_id ,:null => false               #产品种类
      t.integer :process_type_id ,:null => false               #产品处理过程分类，比如包装，辅料，半成品，用来配合生产过程进行定义
      t.string :ab                              #abbreviation 缩写
      t.string :bar_code                        #产品的条码信息
      t.string :image                           #产品的图片信息
      t.string :spec                            #产品的规格，比如大小，容积之类。5ml
      t.string :unit                            #产品的单位，比如套、盒等等
      t.decimal :unit_price     , :null => false , :precision => 8, :scale => 2  ,:default => 0  #产品单价
      t.decimal :cost_price     , :null => false , :precision => 8, :scale => 2  ,:default => 0  #当前产品成本价
      t.decimal :tax_price      , :null => false , :precision => 8, :scale => 2  ,:default => 0  #当前产品含税成本价
      t.decimal :os_cost_price  , :null => false , :precision => 8, :scale => 2  ,:default => 0  #期初产品成本价
      t.decimal :os_tax_price   , :null => false , :precision => 8, :scale => 2  ,:default => 0  #期初产品含税成本价
      t.decimal :max_unit_price , :null => false , :precision => 8, :scale => 2  ,:default => 0  #最高产品单价
      t.decimal :min_unit_price , :null => false , :precision => 8, :scale => 2  ,:default => 0  #最低产品单价
      t.string :product_type                      #产品类型
      t.string :min_quantity    ,:default => 0    #警告的最小数量
      t.string :max_quantity    ,:default => 0    #警告的最大数量
      t.string :for_sale       ,:default => '否'  #此产品是否用于销售，比如包装等配件不是用于销售的。
      #t.integer :parent_id                      #产品的父ID
      t.text :description                        #产品的描述
      t.integer :is_sale       ,:limit => 1 ,:default => 0 #判断一个产品是可以销售的，还是只是为了组成其它套装的，有一些套装或产品，只是为了组成其它的套组，本身不单独销售。。
      #t.integer :is_top        ,:limit => 1 ,:default => 0 #判断一个产品是附属还是最顶端。
      t.integer :is_suit       ,:limit => 1 ,:default => 0 #判断一个产品是不是套装。
      t.integer :is_locked     ,:limit => 1 ,:default => 0 #锁定 1为True 0为False
      t.integer :lock_version  , :default => 0  #乐观锁
      #想把图片放在数据库中，这块Blob的内容，查一下再补建
      t.timestamps
    end
    
  end

  def self.down
    drop_table :products
  end
end
